﻿#region Header

/*
Remote views based on linq
By

Pascal Hauser 
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

and

Raphael Gfeller
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

*/

#endregion

#region Usings

#endregion

namespace Sebastof.Services.Interfaces {
	/// <summary>
	/// Is responsible for applying a new value to an object based on a given key.  
	/// 
	/// Sometimes, a value of an object needs to be changed. This functionality is provided through
	/// this interface. The reason for having this as service is the complexity of the implementation
	/// as we support different types of object. For example <see cref="ISebastofApplicationObject"/> 
	/// implementations need to be treated differently than normal objects.
	/// </summary>
	public interface IChangeApplierService {
		#region Public Methods

		/// <summary>
		/// Set a field of an object to a new value
		/// </summary>
		/// <param name="objectToChange"></param>
		/// <param name="nameOfFieldToChange"></param>
		/// <param name="newValueOfField"></param>
		void SetValue(object objectToChange, string nameOfFieldToChange, object newValueOfField);

		#endregion
	}
}